#ifndef EMOTION_ABSTRACTEMOTION_H
#define EMOTION_ABSTRACTEMOTION_H


#include <QObject>
#include <QUrl>
#include <QSize>


namespace Emotion {

class AbstractEmotion : public QObject
{
    Q_OBJECT
public:
    enum Type {
        StaticEmoticonType,
        AnimatedEmoticonType,
        UnknownEmoticonType
    };

public:
    explicit AbstractEmotion(const QString &name,
                             const QString &meaning,
                             const QString &code,
                             const QString &fullPath,
                             QObject *parent = 0);

private:
    QString m_name;
    QString m_meaning;
    QString m_code;
    QString m_fullPath;
    QSize m_size;

public:
    virtual Type emotionType() const = 0;

public:
    void setName(const QString &name);
    const QString &name() const;

    void setMeaning(const QString &meaning);
    const QString &meaning() const;

    void setCode(const QString &code);
    const QString &code() const;

    void setFullPath(const QString &fullPath);
    const QString &fullPath() const;

    void setSize(const QSize &size);
    void setSize(int width, int height);
    const QSize &size() const;
};

} // namespace Emotion

#endif // EMOTION_ABSTRACTEMOTION_H
